//
//  SMAFNetworkHandler.h
//  Templates_Frame
//
//  Created by Sunny on 16/9/8.
//  Copyright © 2016年 Sunny. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "SMAFNetworkDefine.h"

@class SMAFNetworkItem;

@interface SMAFNetworkHandler : NSObject

/**
 *  items
 */
@property(nonatomic,strong)NSMutableArray *items;

/**
 *   单个网络请求项
 */
@property(nonatomic,strong)SMAFNetworkItem *netWorkItem;

/**
 *  networkError
 */
@property(nonatomic,assign)BOOL networkError;

/**
 *  单例
 *
 *  @return BMNetworkHandler的单例对象
 */
+ (SMAFNetworkHandler *)sharedInstance;

#pragma mark - 创建一个网络请求项
/**
 *  创建一个网络请求项
 *
 *  @param url          网络请求URL
 *  @param networkType  网络请求方式
 *  @param params       网络请求参数
 *  @param requestId    请求id
 *  @param server       哪个服务器
 *  @param delegate     网络请求的委托，如果没有取消网络请求的需求，可传nil
 *  @param showHUD      是否显示HUD
 *  @param successBlock 请求成功后的block
 *  @param failureBlock 请求失败后的block
 *
 *  @return 根据网络请求的委托delegate而生成的唯一标示
 */
- (SMAFNetworkItem*)requestURL:(NSString *)url
                   networkType:(SMAFNetWorkType)networkType
                        params:(NSMutableDictionary *)params
                     requestId:(NSString *) requestId
                    serverType:(SMNetServer) server
                      delegate:(id)delegate
                       showHUD:(BOOL)showHUD
                  successBlock:(SMAFSuccessBlock)successBlock
                  failureBlock:(SMAFFailureBlock)failureBlock;

/**
 *   取消所有正在执行的网络请求项
 */
+ (void)cancelAllNetItems;
/**
 *   监听网络状态的变化
 */
- (void) startMonitoring;
@end
